

-- ***********************
-- Prologue de compilation
-- ***********************


with Ada.Text_Io;



-- **************************************
-- Specification du paquetage utilisateur
-- **************************************


package Entrees_Sorties_Long is

use Ada;

   -- ***********************************************************************
   -- Auteur      : Jean-Marie RIGAUD
   --               Universite Paul Sabatier
   --               31062 TOULOUSE Cedex
   -- Date        : Octobre 1997
   -- Materiel    : PC 
   -- Compilateur : GNAT 3.10p
   -- ***********************************************************************
   -- Service     :
   -- Ce paquetage contient un sous-ensemble des operations d'entrees sorties
   --    evitant a l'utilisateur de connaitre la notion de genericite
   --    Seules quelques operations concernant
   --	les entiers,
   --	les flottants,
   --	les booleens,
   --	les caracteres et
   --	les chaines de caracteres
   --
   --
   --      les entiers longs (32 bits)
   --      les flottants double precision
   --                                   sont fournies
   --    ainsi que
   --      les exceptions les plus importantes
   --                 concernant les entrees-sorties
   --  Ce paquetage est conforme au paquetage standard d'entrees-sorties: il
   --   n'introduit pas d'operateurs supplementaires.
   -- ***********************************************************************


   -- =========================================================
   -- Definition des paquetages necessaires aux entrees-sorties
   -- =========================================================

   package Int_Io   is new Text_Io.Integer_Io(Integer);
   package L_Int_Io is new Text_Io.Integer_Io(Long_Integer);
   package Flt_Io   is new Text_Io.Float_Io(Float);
   package L_Flt_Io is new Text_Io.Float_Io(Long_Float);
   package Bool_Io  is new Text_Io.Enumeration_Io(Boolean);


   -- =======================================
   -- Renommage de certains types necessaires
   -- =======================================

   subtype   Count          is Text_Io.Count;
   subtype   Positive_Count is Text_Io.Positive_Count;
   subtype   Field          is Text_Io.Field;
   subtype   Number_Base    is Text_Io.Number_Base;
   subtype   Type_Set       is Text_Io.Type_Set;


   -- =================================
   -- Renommage de certaines exceptions
   -- =================================

   Data_Error  : exception renames Text_Io.Data_Error;
   End_Error   : exception renames Text_Io.End_Error;


   -- ================================
   -- Entrees et sorties de caracteres
   -- ================================

   procedure Get (Item: out Character)                        renames Text_Io.Get;

   procedure Put (Item: in  Character)                        renames Text_Io.Put;

   -- ===========================================
   -- Entrees et sorties de chaines de caracteres
   -- ===========================================

   procedure Get (Item: out String)                           renames Text_Io.Get;
   
   procedure Put (Item: in  String)                           renames Text_Io.Put;

   procedure Get_Line (Item: out String; Last: out Natural)   renames Text_Io.Get_Line;

   procedure Put_Line (Item: in String)                       renames Text_Io.Put_Line;


   -- ============================
   -- Entrees et sorties d'entiers
   -- ============================

   procedure Get (Item:  out Integer;
      Width: in Field:=0)                          renames Int_Io.Get;

   procedure Put (Item:  in Integer;
      Width: in Field       := Int_Io.Default_Width;
      Base:  in Number_Base := Int_Io.Default_Base) renames Int_Io.Put;

   procedure Get (Item:  out Long_Integer;
      Width: in Field:=0)                          renames L_Int_Io.Get;

   procedure Put (Item:  in Long_Integer;
      Width: in Field       := Int_Io.Default_Width;
      Base:  in Number_Base := Int_Io.Default_Base) renames L_Int_Io.Put;


   -- ===============================
   -- Entrees et sorties de flottants
   -- ===============================

   procedure Get (Item:  out Float;
      Width: in Field := 0)                        renames Flt_Io.Get;

   procedure Put (Item:  in Float;
      Fore:  in Field := Flt_Io.Default_Fore;
      Aft:   in Field := Flt_Io.Default_Aft;
      Exp:   in Field := Flt_Io.Default_Exp)       renames Flt_Io.Put;

   procedure Get (Item:  out Long_Float;
      Width: in Field := 0)                        renames L_Flt_Io.Get;

   procedure Put (Item:  in Long_Float;
      Fore:  in Field := Flt_Io.Default_Fore;
      Aft:   in Field := Flt_Io.Default_Aft;
      Exp:   in Field := Flt_Io.Default_Exp)       renames L_Flt_Io.Put;

   -- ==============================
   -- Entrees et sorties de booleens
   -- ==============================

   procedure Get (Item:  out Boolean)                        renames Bool_Io.Get;

   procedure Put (Item:  in Boolean;
      Width: in Field    := Bool_Io.Default_Width;
      Set:   in Text_Io.Type_Set := Bool_Io.Default_Setting) renames Bool_Io. Put;

   -- ==========================================
   -- Operations de controle des entrees-sorties
   -- ==========================================

   procedure Skip_Line (Spacing : in Positive_Count :=1)      renames Text_Io.Skip_Line;

   procedure New_Page                                         renames Text_Io.New_Page;
   
   procedure Skip_Page                                        renames Text_Io.Skip_Page;
   
   procedure New_Line (Spacing: in Positive_Count:=1)         renames Text_Io.New_Line;

   procedure Set_Col (To: in Positive_Count)                  renames Text_Io.Set_Col;

   procedure Set_Line(To: in Positive_Count)                  renames Text_Io.Set_Line;

   function End_Of_Line return Boolean                        renames Text_Io.End_Of_Line;

   function End_Of_File return Boolean                        renames Text_Io.End_Of_File;

end Entrees_Sorties_Long;

